package io.ooad.banking.dd.application;

import io.ooad.banking.dd.domain.BankAccount;
import io.ooad.banking.dd.domain.AccountTransactionDetails;
import io.ooad.banking.dd.domain.Money;

import java.util.Date;

/**
 * Created by yyang on 16/9/16.
 */
public interface BankingApplication {

    void deposit(BankAccount account, Money amount, Date date);

    void withdraw(BankAccount account, Money amount, Date date);

    void transfer(BankAccount from, BankAccount to, Money amount, Date date);

    BankAccount getById(Long id);

    BankAccount getByAccountNumber(String accountNumber);

    AccountTransactionDetails getAccountDetail(BankAccount account);
}
